using System.Collections.Generic;
using Microsoft.Xna.Framework;
using TinyEngine.Core.Scene;
using TinyEngine.Core.Components;
namespace TinyEngine.Core
{
    public interface IEntity
    {
        bool IsRegistered { get; }

        TinyScene SceneOwner { get; }
        
        Vector3 Position { get; set; }
        
        Rectangle BoundingRectangle { get; }
        
        Entities.EntityList Children { get; }
        
        string Name { get; set; }
        
        List<Components.ITinyComponent> Components { get; }
        
        void Register(TinyScene owner);
        
        void Update(float elapsed);

        T GetComponent<T>() where T : ITinyComponent;

        void SetScene(TinyScene owner);

        void PositionChanged();

        IEntity Parent { get; set; }

        bool MarkForDelete { get; set; }
    }
}
